部署运行k8s

重要

  1. k8sdocker的版本必须兼容,否则会安装失败
    本次使用的k8s-1.19.16docker-19.03.9

  2. 至少使用两台服务器,你也可以使用虚拟机
    注:本文档使用的服务器都是 linux/centos7

  3. 如果机器上有其他版本的docker或者k8s,请全部卸载干净

  4. 如有任何操作没有达到预期的效果,你进行网络搜索

安装docker19.03.9

两台服务器都需要安装docker

1
2
3
yum install docker-ce-19.03.9-3.el7 -y
systemctl enable docker
systemctl start docker
1
2
# 打开文件 
vim /etc/docker/daemon.json

输入如下内容

1
2
3
4
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts":["native.cgroupdriver=systemd"]
}
1
2
# 重启docker
systemctl restart docker

安装k8s1.19.16

两台服务器都需要安装k8s

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 跟着步骤依次复制粘贴运行
# 两台服务器都要执行
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

setenforce 0

yum install -y kubelet-1.19.16 kubeadm-1.19.16 kubectl-1.19.16 --disableexcludes=kubernetes
systemctl enable kubelet && systemctl start kubelet

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sysctl --system

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo swapoff -a

systemctl daemon-reload
systemctl restart kubelet

systemctl enable docker.service
systemctl enable kubelet.service

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile

master服务器初始化kubeadm

1
2
3
4
5
6
7
8
kubeadm init \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.19.16 \
--ignore-preflight-errors=Swap \
# pod网段
--pod-network-cidr 200.100.0.0/16 \
# 当前master服务器的ip
--apiserver-advertise-address 192.168.1.100

经过一段时间后,初始化完毕,终端显示如下内容,请务必保存好

1
2
3
# 务必保存好,在worker节点运行
kubeadm join 192.168.1.100:6443 --token 02fbxd.3w8re5u8avpbnw5z \
--discovery-token-ca-cert-hash sha256:44b8880409e4e09c395a69599049320c90425700c60f3f219c779d7e8182a5bd

继续查看服务启动情况,确保启动完毕

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

检查pod

1
kubectl get pod --all-namespaces

直到全部running

master服务器安装网络插件

1
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

检查pod

1
kubectl get pod --all-namespaces

直到全部running

添加worker节点

请确认worker节点已经安装好docker和k8s了

1
2
kubeadm join 192.168.1.100:6443 --token 02fbxd.3w8re5u8avpbnw5z \
--discovery-token-ca-cert-hash sha256:44b8880409e4e09c395a69599049320c90425700c60f3f219c779d7e8182a5bd

添加成功后

回到master节点

1
2
#查看node
kubectl get nodes

请确保全部Ready,如果没有,请网络搜索

总结

至此,k8s安装部署完成,k8s之路才刚刚开始

我们将使用kubectl命令做很多事情,请接下来熟悉kubectl的使用方法

最终成功后,在master节点,可以看到如下打印示例

1
2
3
4
5
[root@k8s-master ~]$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 25m v1.19.16
k8s-node1 Ready <none> 11m v1.19.16
[root@k8s-master ~]$