Kubeadm部署k8s集群
一、环境准备
主机名 | 系统版本 | Docker | Kubenetes |
---|---|---|---|
master | CentOS Linux release 7.2.1511 (Core) | 18.03.1-ce | v1.18.3 |
slave1 | CentOS Linux release 7.2.1511 (Core) | 18.03.1-ce | v1.18.3 |
slave2 | CentOS Linux release 7.2.1511 (Core) | 18.03.1-ce | v1.18.3 |
二、操作系统环境
设置主机名
#三台主机分别设置
cat > /etc/hostname << EOF
master
EOF
cat > /etc/hostname << EOF
slave1
EOF
cat > /etc/hostname << EOF
slave2
EOF
# 配置免密登录
# master 节点执行
ssh-keygen # 回车
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
# 关闭防火墙
for i in 'master' 'slave1' 'slave2';do systemctl stop firewalld && systemctl disable firewalld;done
# 各节点关闭swap
sed 's/^\/dev\/mapper\/centos-swap/#&/' /etc/fstab
三、每台机器添加yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 查看版本
yum search docker --showduplicates
yum -y install docker-ce-18.03.1-ce
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install kubeadm-1.18.3-0 kubelet-1.18.3-0 kubectl-1.18.3-0
systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet
kubeadm config images list # 查看需要的image版本
四、拉取国内镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.20
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.20
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.20
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.20
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.20 k8s.gcr.io/kube-apiserver:v1.18.20
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.20 k8s.gcr.io/kube-controller-manager:v1.18.20
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.20 k8s.gcr.io/kube-scheduler:v1.18.20
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.20 k8s.gcr.io/kube-proxy:v1.18.20
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1 k8s.gcr.io/etcd:3.4.3-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0 k8s.gcr.io/coredns:1.6.7
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.20
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.20
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.20
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.20
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
五、初始化master节点
kubeadm init --v=5 --kubernetes-version=v1.18.3
# 打印信息
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join xx:xx:xx:xx:6443 --token ... \
--discovery-token-ca-cert-hash sha256:...
#执行以上信息
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
六、网络配置CNI插件,选用Weave Net
## k8s网络插件,本例使用weave作为 k8s的网络插件
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
k8s的网络插件介绍
七、加入其他worker节点
在slave节点上执行
kubeadm join xx:xx:xx:xx:6443 --token ... \
--discovery-token-ca-cert-hash sha256:...
八、查看节点状态
kubectl get nodes -owide
# 添加节点label
kubectl label node slave1 node-role.kubernetes.io/worker=
kubectl label node slave2 node-role.kubernetes.io/worker=
# 删除master节点禁止调度五污点
kubectl taint node master node-role.kubernetes.io/master-
# 查看所有pod状态
kubectl get pods -owide -A
如果节点或者pod存在NotReady、非Running状态,通过kubectl describe [pod|node]
命令查看节点或者pod events信息