k8s 部署安装
官网教程
从 docker 部署的 docker 配置官网:https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker
使用 kubeadm 引导集群 官网:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/
flannel 网络插件官网:https://github.com/coreos/flannel
实验
主机 | ip | docker 版本 | k8s |
---|---|---|---|
server2 | 172.25.9.2 | 20.10.2 | v1.21.2 master |
server3 | 172.25.9.3 | 20.10.2 | v1.21.2 client |
server4 | 172.25.9.4 | 20.10.2 | v1.21.2 client |
# 提示,关闭防火墙,selinux。减少实验出错。
setenforce 0
vim /etc/selinux/config
……
SELINUX=disabled
……
systemctl disable --now firewalld
# 安装与部署docker:
## server2、server3、server4:
vim /etc/yum.repos.d/docker-ce.repo
[docker]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0
yum install -y docker-ce
vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
systemctl enable --now docker
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://71gte742.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
systemctl daemon-reload
systemctl restart docker
# k8s 部署前工作:
## 禁用 swap 分区
swapoff -a
vim /etc/fstab
## 免密
ssh-keygen
ssh-copy-id server3
ssh-copy-id server4
## 宿主机同步网络时间
vim /etc/chrony.conf
……
11 server 210.72.145.44 prefer
12 server ntp1.aliyun.com iburst
13 server ntp2.aliyun.com iburst
……
31 allow 0.0.0.0/0
……
## 时间同步
yum search chronyd
yum install -y chrony.x86_64
vim /etc/chrony.conf
server 172.25.9.250 iburst
systemctl enable --now chronyd
chronyc sources -v
# k8s 部署安装
## server2、server3、server4:
vim /etc/yum.repos.d/k8s.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
yum install -y kubelet kubeadm kubectl
systemctl enable --now kubelet.service
# 控制节点部署
server2:
## 查看默认配置
kubeadm config print init-defaults
## 列出所需镜像,从registry.aliyuncs.com/google_containers 默认从k8s 下载需要翻墙
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
## 拉取所需镜像,加快初始化速度。注意:当前版本所需的 registry.aliyuncs.com/google_containers/coredns:v1.8.0 阿里上没有,本人是从dockerhub 下载相应所需的版本,重新打标签,否则初始化过不去。
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
### coredns官网拉取coredns/coredns:1.8.0 镜像重新打标签。
docker pull coredns/coredns:1.8.0
docker image tag coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns:v1.8.0
### 初始化控制节点,注意初始化成功后,会有提示,client 节点加入集群的命令。client 加入集群时直接执行它就好,token 有效期限是 24 小时。
#### --pod-network-cidr=10.244.0.0/16 //使用flannel网络组件时必须添加
#### --image-repository 指定镜像库
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
#### 配置kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
#### 配置kubectl命令补齐功能
echo "source <(kubectl completion bash)" >> ~/.bashrc
#### 查看kube-system 下pod 是否running,和 ready。
kubectl get pod --namespace kube-system
#### 安装flannel网络组件
docker pull quay.io/coreos/flannel:v0.14.0
docker pull quay.io/coreos/flannel:v0.12.0-amd64
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#### 将client 节点所需镜像打包,其它节点直接导入。或者有harbor 私有仓库,直接上传至仓库,从私有仓库拉取。
docker save quay.io/coreos/flannel:v0.14.0 quay.io/coreos/flannel:v0.12.0-amd64
\ registry.aliyuncs.com/google_containers/coredns:v1.8.0
\ registry.aliyuncs.com/google_containers/pause:3.4.1
\ registry.aliyuncs.com/google_containers/kube-proxy:v1.21.2 > node.tar
# 工作节点配置
server3、4:
## 导入所需镜像之后,直接执行控制节点初始化时提示的加入,集群命令加入就可。
docker load -i node.tar
kubeadm join 172.25.9.2:6443 --token mmpdxz.441h4rllmjurgdjj --discovery-token-ca-cert-hash sha256:5892a1fae2cc7633c8b280d656c9f934538fcf777f0398e030e8d82bffbc2c66