在CentOS上自定义Kubernetes(k8s)配置涉及多个步骤,包括网络配置、防火墙设置、SELinux关闭、Docker安装、Kubernetes组件安装以及网络插件的配置。以下是一个详细的指南:
查看当前网络状态:
ip addr
配置网络接口:
编辑网络配置文件,例如 /etc/sysconfig/network-scripts/ifcfg-ens33,设置静态IP地址、子网掩码、网关和DNS服务器。
DEVICE=ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
备份配置文件:
cp ifcfg-ens33 ifcfg-ens33.backup
重启网络服务:
systemctl restart network
验证网络连接:
ping www.baidu.com
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
关闭SELinux:
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
临时禁用Swap:
swapoff -a
永久禁用Swap(编辑 /etc/fstab 文件):
sed -i 's/.swap./#&/' /etc/fstab
删除旧版本Docker:
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
安装Docker:
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce-20.10.9 docker-ce-cli-20.10.9 containerd.io
配置Docker守护进程:
cat <<EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
修改仓库:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyuncs.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyuncs.com/kubernetes/yum/doc/yum-key.gpg
EOF
安装Kubernetes组件:
yum install kubelet-1.22.2 kubeadm-1.22.2 kubectl-1.22.2 -y
systemctl enable kubelet && systemctl start kubelet
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
初始化Master节点:
kubeadm init --apiserver-advertise-address 192.168.1.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.22.2 --control-plane-endpoint k8s-master --service-cidr 172.16.0.0/16 --pod-network-cidr 10.244.0.0/16
加入Worker节点: 按照Master节点输出的指示,将每个Worker节点加入到集群中。
安装bash-completion:
yum install -y bash-completion
配置kubectl命令自动补全:
echo 'source /usr/share/bash-completion/bash_completion' >> ~/.bashrc
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc
测试k8s集群:
kubectl create deployment httpd --image=httpd
kubectl expose deployment httpd --port=80 --type=NodePort
kubectl get pod | grep -i httpd
测试coredns域名解析:
kubectl exec -it busybox -- nslookup kubernetes.default
kubectl exec -it busybox -- nslookup kube-dns.kube-system