CENTOS部署K8S
本人平生最讨厌的事情之一就是配环境,每次到一个新的学习工作环境中都会遇到重新配置环境的问题…还往往困扰人挺久的。这次把所有问题做一个总结。PS:UBUNTU和CENTOS我都试着部署了,感觉上来说CENTOS的config配置起来舒服不少。
准备工作
用的是VMWARE 14,centos是centos 7miniamal,网上资源不少,这里就不放了。首先就算是尝试性的建立虚拟机,也一定给4G以上内存,以及两个以上的处理器(不然后面会报错)进去先把net-tools pip这些个人常用的搞好,免得后面打断思路。
正式开始部署
下载docker-ce
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum -y install docker-ce docker-ce-cli containerd.io
启动docker服务
sudo systemctl enable docker
sudo systemctl start docker
启动docker服务
sudo systemctl enable docker
sudo systemctl start docker
sudo docker run hello-world
部署kubeadm
1.国内使用阿里云的源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
enabled=1
EOF
2.关闭selinux (这两步比较简单,自己搜索)
3.swapoff (这里一定要关闭selinux 和swapoff 不然后面初始化error会出问题)
网络参数设置
4.
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
5.初始化kubeadm配置(这一步很重要,不对就会引起init 错误)
kubeadm config print init-defaults > kubeadm.conf
修改kubeadm.conf如下内容
vi kubeadm.conf
advertiseAddress: 10.211.55.8 #虚拟机的ip地址,服务监听地址
#这里填你自己的addr,可以用IP addr命令查看
podSubnet: "10.10.0.0/16" #pod使用的网络cidr,需要与后面的calico podsubnet参数相同
imageRepository: k8s.gcr.io #替换为: “imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers”
6.初始化kubeadm
kubeadm config print init-defaults > kubeadm.conf
这一步卡了很久,之前config犯的所有错误都会在这一步体现,包括swapoff,selinux,镜像源没配对等等,出错就需要
kubeadm reset -f 然后重新配置config
(这里再补充一句,之前都是用的UBUNTU,问题就是UBUNTU看官方文档下载下来版本是1.17.3,但是国内镜像源组件最高是1.17.0版本的,在wait kubelet boots的时候就会timeout。配置了半天不太行就放弃ubuntu了
)
7.init成功之后就可以下载calico这些东西了
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
yum install -y wget
wget https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
修改calico.yaml中pod网络参数:
vi calico.yaml
- name: CALICO_IPV4POOL_CIDR
value: "10.10.0.0/16"
与前面的pod网络对应
kubectl apply -f calico.yaml
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
8.开启!
kubectl taint nodes --all node-role.kubernetes.io/master-
然后就可通过kubectl去查看控制PODS状态了
遇到的一些其他问题
1.花式被墙,找aliyun的镜像源吧…最近emmm不太安生
2.init失败,这个原因太多了,多用journal命令查看原因,然后百度解决。
我遇到的有:
port被占:把之前的k8s删了重来
设置的镜像源pull不到,一定要去imageregister设置
3.K8s的官网给出的安装方案有些细节不适用于天朝,需要手动配置一些网络设置
4.有些pod一开始是pending,集群unready等情况,耐心等等再看,我的pend了几分钟才开始running
5.由于不熟悉纯命令行的OS,传输文件有点麻烦。
看来看去git bash是最好用的
传输格式如下
git中打开需要传输的文件夹
scp xxx.yaml root@192.168.xxx.xxx:~/
输入密码
yes
搞定…
6.最后忘了,一开始发现centos连不了网,查查那个ip addr里面你有IP地址没,如果没有IP
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3(这个enpxxx填你自己的ifcfg后缀)
ONBOOT=no