k8s集群安裝
一、環境準備操作系統 CentOS 7.X內存 2G 【至少】CPU 2核【至少】硬盤 20G 【至少】1.1 yum 源 1.2關閉防火墻,關閉selinux#syste
- 一、環境準備
- 操作系統 CentOS 7.X
- 內存 2G 【至少】
- CPU 2核【至少】
- 硬盤 20G 【至少】
1.1
- yum 源
1.2關閉防火墻,關閉selinux
#systemctl stop firewalld & systemctl disable firewalld
#setenforce 0
1.3關閉swap
#sed -i '/ swap / s/^/#/' /etc/fstab
1.4 系統環境
vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100t
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1ttt t
net.netfilter.nf_conntrack_max=2310720
echo “* soft nofile 65536” >> /etc/security/limits.conf
echo “* hard nofile 65536” >> /etc/security/limits.conf
echo “* soft nproc 65536” >>/etc/security/limits.conf
echo “* hard nproc 65536” >>/etc/security/limits.conf
echo “* soft memlock unlimited” >> /etc/security/limits.conf
echo “* hard memlock unlimited” >>/etc/security/limits.conf
二、docker安裝
2.1安裝docker
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum install docker-ce -y
#docker --version
#systemctl start docker & systemctl enable docker
2.2配置加速
#mkdir -p /etc/docker
#vi /etc/docker/daemon.json
{ t "registry-mirrors": ["https://27zv9ros.mirror.aliyuncs.com"] t}
#systemctl daemon-reload
#systemctl restart docker
三、主節點安裝
3.1 安裝kubernetes
vi /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
#yum -y install kubeadm kubelet kubectl --disableexcludes=kubernetes
#systemctl enable kubelet && systemctl start kubelet
3.2拉取鏡像
#kubeadm config images list
//用kubeadm查看master上所需的鏡像,下載并導入相關的鏡像
#docker pull mirrorgooglecontainers/kube-controller-manager:v1.15.0
#docker pull mirrorgooglecontainers/kube-apiserver:v1.15.0
#docker pull mirrorgooglecontainers/kube-scheduler:v1.15.0
#docker pull mirrorgooglecontainers/kube-proxy:v1.15.0
#docker pull mirrorgooglecontainers/pause:3.1
#docker pull mirrorgooglecontainers/etcd:3.3.10
#docker pull coredns/coredns:1.3.1
打標記
#docker tag mirrorgooglecontainers/kube-proxy:v1.15.0 http://k8s.gcr.io/kube-proxy:v1.15.0
#docker tag mirrorgooglecontainers/kube-scheduler:v1.15.0 http://k8s.gcr.io/kube-scheduler:v1.15.0
#docker tag mirrorgooglecontainers/kube-apiserver:v1.15.0 http://k8s.gcr.io/kube-apiserver:v1.15.0
#docker tag mirrorgooglecontainers/kube-controller-manager:v1.15.0 http://k8s.gcr.io/kube-controller-manager:v1.15.0
#docker tag mirrorgooglecontainers/etcd:3.3.10 http://k8s.gcr.io/etcd:3.3.10
#docker tag coredns/coredns:1.3.1 http://k8s.gcr.io/coredns:1.3.1
#docker tag mirrorgooglecontainers/pause:3.1 http://k8s.gcr.io/pause:3.1
#######刪除未打標記的鏡像,可不操作##########################33
#docker rmi mirrorgooglecontainers/kube-apiserver:v1.15.0
#docker rmi mirrorgooglecontainers/kube-controller-manager:v1.15.0
#docker rmi mirrorgooglecontainers/kube-scheduler:v1.15.0
#docker rmi mirrorgooglecontainers/kube-proxy:v1.15.0
#docker rmi mirrorgooglecontainers/pause:3.1
#docker rmi mirrorgooglecontainers/etcd:3.3.10
#docker rmi coredns/coredns:1.3.1
#docker images
3.3初始化
#kubeadm init --pod-network-cidr=10.1.0.0/16 --kubernetes-version=v1.15.0 --apiserver-advertise-address=192.168.1.100
注意:此處末尾會有提示,需要在執行的命令
#mkdir -p $HOME/.kube
#cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
#chown $(id -u):$(id -g) $HOME/.kube/config
初始化生成token一定要記錄下來,后邊在node節點使用kubeadm join往集群中添加節點時會用到。
# kubeadm join 192.168.0.102:6443 --token ij6at3.ehwxgh7vccsouuj5 --discovery-token-ca-cert-hash sha256:a580d31f70262a442734796dac01c27963106e41750c5339dc3fb6e3e769eec6 --ignore-preflight-errors=Swap
# kubeadm token create --print-join-command 找回以上信息
3.4下載flannel網絡
#wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#kubectl apply -f kube-flannel.yml
離線版 https://github.com/coreos/flannel/releases
四、work節點安裝
4.1鏡像拉取
kube-proxy、pause、coredns、flannel(手動部署)
鏡像的版本信息需要根據實際情況進行相應的修改。通過docker tag命令修改為kubeadm查到的標簽即可。
#docker pull mirrorgooglecontainers/kube-proxy:v1.15.0
#docker pull mirrorgooglecontainers/pause:3.1
#docker pull coredns/coredns:1.3.1
#docker tag mirrorgooglecontainers/kube-proxy:v1.15.0 http://k8s.gcr.io/kube-proxy:v1.15.0
#docker tag coredns/coredns:1.3.1 http://k8s.gcr.io/coredns:1.3.1
#docker tag mirrorgooglecontainers/pause:3.1 http://k8s.gcr.io/pause:3.1
##############可不操作###############3
#docker rmi mirrorgooglecontainers/kube-proxy:v1.15.0
#docker rmi mirrorgooglecontainers/pause:3.1
#docker rmi coredns/coredns:1.3.1
#docker images
4.2加入集群
#yum -y install kubeadm
#kubeadm join 192.168.1.100:6443 --token 16iqqc.w0j8vrrqwyq1kx7x --discovery-token-ca-cert-hash sha256:5936509b58b84c0d7fe2aad932ccb6f806a131b0cc6262304fbff4fd94192749
注:如果因為沒有在master執行網絡附件。t
需要重新執行加入的時候先重置命令:kubeadm reset
加入后,在master執行kubectl get nodes READY即可
五、測試
查看各個節點得pod狀態
pod狀態為Pending、ContainerCreating、ImagePullBackOff 都表明 Pod 沒有就緒,Running 才是就緒狀態。
如果有pod提示Init:ImagePullBackOff,說明這個pod的鏡像在對應節點上拉取失敗,我們可以通過 kubectl describe pod 查看 Pod 具體情況,以確認拉取失敗的鏡像:
kubectl logs podnome -n kube-system查看日志
#kubectl get pod --all-namespaces -o wide
#kubectl describe pod coredns-86c58d9df4-lrc44 --namespace=kube-system
#kubectl get componentstatus #查看組件運行狀態
#kubectl get nodes #查看各個節點的信息
#kubectl get ns #查看命名空間
#kubectl get pod -n kube-system -o wide#查看命名空間kube-system中容器的啟動情tt
況
#kubectl exec pod_name -c container_name -it -- /bin/bash #進入pod中的容器
六、dashboard面板管理
1) #docker pull http://k8s.gcr.io/kubernetes-dashboard-amd64
#kubectl apply -f kubernetes-dashboard-http.yml
2)docker load -i dashboard.tar ##下載tar包然后執行
七、命令介紹
#kubectl exec -ti <your-pod-name> -n <your-namespace> -- /bin/sh
//進入pod








