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
若无特殊注明,文章均为本站原创或整理发布。
转载请注明本文地址:https://om.fangxiaoxiong.com/1849.html