linux搭建k8s叢集
阿新 • • 發佈:2022-04-11
K8s叢集部署 1、 關閉防火牆 systemctl stop firewalld systemctl disable firewalld 2、 關閉selinux sed -i 's/enforcing/disabled/' /etc/selinux/config #永久關閉 setenforce 0 #臨時關閉 3、 關閉swap swapoff -a #臨時關閉 sed -ri 's/.*swap.*/#&/' /etc/fstab #永久關閉 確認下是否關閉 cat /etc/fstab 4、 根據規劃設定主機名 hostnamectl set-hostname k8s-master #設定各節點主機名4.1 在各節點修改/etc/hosts 192.168.3.110 k8smaster 192.168.3.111 k8s-node1 192.168.3.112 k8s-node2 5、 在master新增hosts cat >> /etc/hosts << EOF 192.168.25.120 master 192.168.25.121 node1 192.168.25.122 node2 EOF 6、 將橋接的IPv4流量傳遞到iptables的鏈 cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables =1 net.bridge.bridge-nf-call-iptables =1 EOF sysctl --system #生效 7、 時間同步 yum install ntpdate –y ntpdate time.windows.com 或者 ntpdate time.nist.gov ntpdate ntp.aliyun.com rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 8、 安裝docker wget https://mirrors.aliyun.com/docker-ce/linux//centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 檢視docker版本列表 yum list docker-ce --showduplicates | sort - yum install docker-ce-18.06.1.ce-3.el7 systemctl enable docker && systemctl start docker docker --version cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://zxnkv11f.mirror.aliyuncs.com"] } EOF 或者 中科大映象加速: { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } 網易163映象加速: { "registry-mirrors": ["http://hub-mirror.c.163.com"] } sudo systemctl daemon-reload sudo systemctl restart docker 9、 新增阿里雲YUM軟體源 cat > /etc/yum.repos.d/kubernetes.repo << EOF [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 EOF 10、 安裝kubeadm,kubelet和kubectl 由於版本更新頻繁,這裡指定版本號部署: 檢視指定版本號安裝 yum list kubelet --showduplicates | sort -r yum list kubeadm --showduplicates | sort -r yum list kubectl --showduplicates | sort -r yum install kubelet-1.18.0-0 kubeadm-1.18.0-0 kubectl-1.18.0-0 -y systemctl enable kubelet 11、 部署kubernetes master 在192.168.3.110(master)執行: kubeadm init \ --apiserver-advertise-address=192.168.25.120 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16 由於預設拉取映象地址k8s.gcr.io國內無法訪問,這裡指定阿里雲映象地址 使用kubectl工具: mkdir –p $HOME/.kube sudo cp –I /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config kubectl get nodes 有報錯資訊 下面是一個例子,你可以列出所有在docker中執行的Kubernetes容器: - 'docker ps -a | grep kube | grep -v pause' 一旦你找到了失敗的容器,你可以用以下方法檢查它的日誌: docker logs CONTAINERID 12、 加入kubernetes node 在192.168.3.111/112(node)執行 向叢集新增新節點,執行在kubeadmin init輸出的kubeadm join命令: kubeadm join 192.168.3.110:6443 --token 1bolhb.yi8q1hbsxm93mmh7 \ --discovery-token-ca-cert-hash sha256:b33cb41939c0f1d212619e2fa857ccd026b7f30e972e030ee45b52e80b48936f 預設token有效期為24小時,當過期之後,該token就不可用了,這時就需要重新建立 Token,操作如下: Kubeadm token create --print-join-comand 13、 部署CNI網路外掛 wget https://raw.githubuser content.com/coreos/flannel/master/Documentation/kube-flannel.yml 預設映象地址無法訪問,sed命令修改為docker hub映象倉庫 kubectl apply –f https://raw.githubuser content.com/coreos/flannel/master/Documentation/kube-flannel.yml wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml wget kube-flannel.yml的時候顯示連線失敗 是因為網站被牆了,建議在/etc/hosts檔案新增一條 199.232.68.133 raw.githubusercontent.com kubectl get pods –n kube-system 報錯資訊: The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port? 解決辦法: vi /etc/hosts ###增加下面的解析 199.232.68.133 raw.githubusercontent.com 199.232.68.133 user-images.githubusercontent.com 199.232.68.133 avatars2.githubusercontent.com 199.232.68.133 avatars1.githubusercontent.com 14、 測試kubernetes叢集 在kubernetes叢集中建立一個pod,驗證是否正常執行