kubernetes containerd版本
基础环境配置
节点规划
IP |
hostname |
说明 |
10.0.0.1 |
k8s-master |
master 节点 |
10.0.0.2 |
k8s-node01 |
node 节点 |
10.0.0.3 |
k8s-node02 |
node 节点 |
基本配置
所有节点 配置hosts,修改/etc/hosts如下:
10.0.0.1 k8s-master 10.0.0.2 k8s-node01 10.0.0.3 k8s-node02
|
所有节点 CentOS 初始化
详细步骤 回顾文章 << CentOS 初始化 >>
所有节点 containerd 安装
详细步骤 回顾文章 << containerd 安装 >>
K8s组件及Runtime安装
所有节点配置k8s内核:
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-arptables = 1
|
此时 /etc/sysctl.d/k8s.conf
无法生效,需要启动模块
# 临时生效,执行如下命令 modprobe br_netfilter
# 重启永久生效,执行如下步骤 vim /etc/sysconfig/modules/br_netfilter.modules
modprobe br_netfilter
chmod +x /etc/sysconfig/modules/br_netfilter.modules /bin/bash /etc/sysconfig/modules/br_netfilter.modules
|
查看是否成功
lsmod | grep br_netfilter
|
所有节点 ipvs 安装
yum install -y ipset ipvsadm
|
配置 ipvs
vim /etc/sysconfig/modules/ipvs.modules #!/bin/bash
modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4
chmod +x /etc/sysconfig/modules/ipvs.modules /bin/bash /etc/sysconfig/modules/ipvs.modules
|
查看是否成功
lsmod | grep -e -ip_vs -e nf_conntrack_ipv4
|
所有节点kubernetes.repo
源配置:
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
|
k8s 安装
master 节点 kubelet kubeadm 外 多安装一个 kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
|
master 节点 添加 kubectl 自动补全
source <(kubectl completion bash)
|
node 节点 安装 kunelet kubeadm
yum install -y kubelet kubeadm --disableexcludes=kubernetes
|
配置 kubelet
vim /etc/sysconfig/kubelet
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd" KUBE_PROXY_MODE="ipvs"
|
设置 kubelet 开机启动
systemctl enable kubelet && systemctl start kubelet
|
此时kubelet的状态,还是启动失败,通过journalctl -xeu kubelet能看到error信息;只有当执行了kubeadm init后才会启动成功。
拉取 kubeadm 默认配置
kubeadm config print init-defaults > ~/k8s-init-config.yaml
|
更改 k8s.gcr.io 镜像下载地址,并下载
vim ~/k8s-init-config.yaml
imageRepository: registry.aliyuncs.com/google_containers
|
kubeadm config images pull --config=~/k8s-init-config.yaml
|
修改 /etc/containerd/config.toml, 使 pause 和 k8s 下载下来的镜像保持一致
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8"
|
重启 containerd
systemctl daemon-reload systemctl restart containerd
|
master 节点 初始化
方式一
vim ~/k8s-init-config.yaml
advertiseAddress: 10.0.0.1
imageRepository: registry.aliyuncs.com/google_containers
serviceSubnet: 10.55.0.0/16 podSubnet: 10.99.0.0/16
|
kubeadm init \ --config=k8s-init-config.yaml \ --ignore-preflight-errors=swap \ --upload-certs
|
方式二
kubeadm init \ --apiserver-advertise-address=10.0.0.1 \ --apiserver-bind-port=6443 --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.55.0.0/16 \ --pod-network-cidr=10.99.0.0/16 --ignore-preflight-errors=swap \ --upload-certs
|
apiserver-advertise-address 如果配置的不是ip
而是api.server
,则需要在 所有节点的 /etc/host
添加 10.0.0.1 apiserver.com
的解析
master 失败后
# 重置kubeadm kubeadm reset -f # 删除旧配置 rm -fr $HOME/.kube/config
|
master 成功后
rm -rf $HOME/.kube mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
|
master 节点 加入集群
kubeadm join 10.0.0.1:6443 --token hzlzrr.uwuegx4locpu36oc \ --discovery-token-ca-cert-hash sha256:4cbe428cb3503277be9fbcf3a99de82a97397a624dd94d4270c4eed1b861f951 \ --control-plane --certificate-key 28b178f04afae3770aa92add0206650b2359dd61424f127a6d44142dd15a280d
|
node 节点 初始化
node 节点 加入集群
# 该命令来自master安装成功后的最后两行信息 kubeadm join 10.0.0.1:6443 --token hzlzrr.uwuegx4locpu36oc \ --discovery-token-ca-cert-hash sha256:4cbe428cb3503277be9fbcf3a99de82a97397a624dd94d4270c4eed1b861f951
|
master 节点 安装 网络插件
选其一即可:calico 或 flannel 或 weave 网络插件
Calico
kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"
|
Weave
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
|
运维操作
修改 端口 范围
vim /etc/kubernetes/manifests/kube-apiserver.yaml 添加到如下位置 - command: - kube-apiserver - --service-node-port-range=1-65535
|
查看 token
重新创建 token
# 临时 kubeadm token create --print-join-command # 永久 kubeadm token create --print-join-command --ttl 0
|
查看discovery-token-ca-cert-hash 获取ca证书sha256编码hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
|
删除 node 节点
kubectl delete nodes k8s-node01
|