Kubernetes部署

  • Post author:
  • Post category:Kubernetes
  • Page Views 529 阅读

1.系统环境

系统:Ubuntu Server 18.04.2

节点:master、node-1、node-2

配置:masterCPU至少两核

节点都需要安装docker kubelet kubeadm kubectl

2.安装前准备

sudo ufw disable ###关闭防火墙
sudo vi /etc/selinux/config ###关闭SELINUX
SELINUX=permissive
sudo swapoff -a ###关闭swap
sudo vi /etc/fstab ###禁用swap开机挂载
添加hosts解析 ###一定要添加,否则后续初始化master会失败
reboot

3.安装docker

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -   ###添加docker的GPG密钥
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"  ###添加镜像源
sudo apt-get update
sudo apt-get install docker-ce   ###安装docker,默认是最新版。可使用apt-cache madison docker-ce命令查看可安装版本,安装指定版本。
systemctl start docker && systemctl enable docker

4.安装kubelet kubeadm kubectl

curl -O https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg ###
sudo apt-key add apt-key.gpg
sudo vim /etc/apt/sources.list.d/kubernetes.list ###添加如下内容
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
systemctl start kubelet && systemctl enable kubelet

5. 查看版本号

fxx2@kube-node-1:~$ sudo kubelet --version
[sudo] password for fxx2:
Kubernetes v1.17.2

6.初始化Master

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.244.148 --kubernetes-version=v1.17.2
#####
--pod-network-cidr:指定pod网络范围,由于稍后会使用flannel网络方案,这里必须设置这个CIDR
--apiserver-advertise-address:指定master使用哪个interface与Cluster的其他节点通信
####
此时初始化操作由于无法拉取国外镜像会报错,根据报错信息可以知道需要下载的镜像是什么。再从国内资源下载镜像后重新初始化。
类似以下几个,环境不同镜像版本号应该不同,根据实际情况调整。
k8s.gcr.io/kube-apiserver:v1.17.2
k8s.gcr.io/kube-controller-manager:v1.17.2
k8s.gcr.io/kube-scheduler:v1.17.2
k8s.gcr.io/kube-proxy:v1.17.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.5

7.下载镜像

使用一个简单的脚本下载,并重新打标签。

#!/bin/bash -v
images=(
kube-apiserver:v1.17.2
kube-controller-manager:v1.17.2
kube-scheduler:v1.17.2
kube-proxy:v1.17.2
pause:3.1
etcd:3.4.3-0
coredns:1.6.5)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done

docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64   ###pod依赖镜像
docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
docker rmi quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64

8.重新初始化

sudo kubeadm reset   ###先重置
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.244.148 --kubernetes-version=v1.17.2

9.配置kubectl

上一步初始化成功后,根据提示配置,配置后才可以使用kubectl命令行工具

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

10.安装pod网络

必须安装,否则pod之间无法通信

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

11.Node加入集群

根据初始化成功后的提示加入即可

sudo kubeadm join 192.168.244.148:6443 --token 22rurj.9iqoxux752hlgsqq 
    --discovery-token-ca-cert-hash sha256:ab2233443455c2764534545667d7ed93d5654656677c6f767567657

此时的token有效时间为24H,失效后可以通过以下命令创建

kubeadm token create  ##创建token

kubeadm token list ##忘记后可以通过这个命令查看token

12.查看pod状态

fxx2@kube-node-1:~$ sudo kubectl get pod --all-namespaces  
NAMESPACE      NAME                               READY     STATUS       RESTARTS   AGE
kube-system    coredns-6955765f44-5d6tx           1/1       Terminating    1        45h
kube-system    coredns-6955765f44-l2pvp           1/1       Running        1        21h
kube-system    coredns-6955765f44-l5gmd           1/1       Running        1        21h
kube-system    coredns-6955765f44-w2vf5           1/1       Terminating    1        45h
kube-system    etcd-kube-node-1                   1/1       Running        2        45h
kube-system    kube-apiserver-kube-node-1         1/1       Running        2        45h
kube-system    kube-controller-manager-kube-node-1 1/1      Running        4        45h
kube-system    kube-flannel-ds-amd64-d75n5         1/1      Running        2        44h
kube-system    kube-flannel-ds-amd64-hxrb7         1/1      Running        0        18h
.....
####注意
running表示pod状态正常,此时你可能会发现有些pod处于pending或者其他状态,可以通过kubectl describe pod   --namespace=kube-system 命令查看状态
会发现pod由于无法下载镜像导致状态异常,所以pod也需要下载上文的镜像。

13.查看node

sudo kubectl get node


「 文章如果对你有帮助,请点个赞哦^^ 」 

0