Kubernetes——k8s1.17.0 kubeadm安裝 single control-plane cluster with kubeadm

1.環境準備

1.1 節點規劃
序號 ip 主機名 角色
1 192.168.0.71 master.blueicex.com etcd ansible
2 192.168.0.72 node1.blueicex.com work
3 192.168.0.73 node2.blueicex.com work
4 192.168.0.77 resouce.blueicex.com dns服務器、ntpd服務器 、yum源 、docker registry
1.2 安裝環境

centos7.4最小安裝
ssh互信
firewalld關閉
selinux disable
ntp時間同步
dns搭建完畢/hosts配置完成
yum源自備

2. 安裝準備

2.1 配置ansible
[root@master ~]# vim /etc/ansible/hosts 
[alls]
master.blueicex.com
node1.blueicex.com
node2.blueicex.com
[nodes]
node1.blueicex.com
node2.blueicex.com
[resource]
resource.blueicex.com
2.2 解決由於 iptables 被繞過而導致流量無法正確路由的問題
[root@master ~]# ansible alls -m shell -a "echo 'net.bridge.bridge-nf-call-ip6tables = 1'  >> /etc/sysctl.d/k8s.conf"
[root@master ~]# ansible alls -m shell -a "echo net.bridge.bridge-nf-call-iptables = 1 >> /etc/sysctl.d/k8s.conf"
[root@master ~]# ansible alls -m shell -a 'sysctl --system'
2.3 docker 安裝
[root@master ~]# ansible alls -m shell -a 'yum install docker-1.13.1 -y'
2.4 配置docker存儲卷
[root@master ~]# find / -iname container-storage-setup
/usr/bin/container-storage-setup
/usr/share/container-storage-setup
/usr/share/container-storage-setup/container-storage-setup
[root@master ~]# cp /usr/share/container-storage-setup/container-storage-setup /etc/sysconfig/config-docker-storage-setup
[root@master ~]# lsblk | grep sdb
sdb               8:16   0   20G  0 disk
[root@master ~]# vim /etc/sysconfig/config-docker-storage-setup
DEVS=/dev/sdb
VG=dockervg
[root@master ~]# ansible alls -m copy -a 'src=/etc/sysconfig/config-docker-storage-setup dest=/etc/sysconfig/'
2.5 配置docker加速器
[root@resource ~]# vim /mnt/usb/config/docker/daemon.json 
{
   "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://2savhou3.mirror.aliyuncs.com"],
   "insecure-registries":["resource.blueicex.com:5000"]
}
[root@master ~]# ansible alls -m  get_url -a "url=http://resource.blueicex.com/config/docker/daemon.json dest=/etc/docker"
2.6 啓動docker
[root@master ~]# ansible alls -m shell -a 'bash docker-storage-setup && systemctl start docker &&  systemctl enable docker '
[root@master ~]# docker info| grep system
  WARNING: You're not using the default seccomp profile
 Backing Filesystem: xfs
Cgroup Driver: systemd

3. kubeadm安裝配置集羣

3.1 安裝kubeadm-1.17.0 kubelet-1.17.0 kubectl-1.17.0
[root@master ~]# ansible alls -m shell -a 'yum install  kubeadm-1.17.0 kubelet-1.17.0 kubectl-1.17.0 -y'
[root@master ~]# ansible alls -m shell -a 'echo KUBELET_EXTRA_ARGS=--cgroup-driver=systemd > /etc/default/kubelet'
[root@master ~]# ansible alls -m shell -a ' systemctl enable kubelet && systemctl start kubelet '
3.2 初始化集羣

鏡像倉庫準備的鏡像

resource.blueicex.com:5000/google_containers/etcd:3.4.3-0
resource.blueicex.com:5000/google_containers/kube-apiserver:v1.17.0
resource.blueicex.com:5000/google_containers/kube-controller-manager:v1.17.0
resource.blueicex.com:5000/google_containers/kube-proxy:v1.17.0
resource.blueicex.com:5000/google_containers/kube-scheduler:v1.17.0
resource.blueicex.com:5000/coreos/flannel:v0.11.0-amd64
resource.blueicex.com:5000/google_containers/coredns:1.6.5
resource.blueicex.com:5000/google_containers/pause:3.1
[root@master ~]# kubeadm init \
  --image-repository resource.blueicex.com:5000/google_containers \
  --kubernetes-version v1.17.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --apiserver-advertise-address=192.168.0.71
  .............
  To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
  .............
 kubeadm join 192.168.0.71:6443 --token hmktog.g9h8o0j6txhsmjkg \
    --discovery-token-ca-cert-hash sha256:9a78ae921c338e1b9473647547018d848ee0e71d40bcadbb3c4e6a3c7c516465 

notice:★★★
192.168.0.71:master本機地址
resource.blueicex.com:5000/google_containers:docker倉庫地址
安裝不成功強制reset

[root@master ~]#  kubeadm  reset -f

刪除節點
kubectl delete node

3.3 配置權限
[root@master ~]#  mkdir -p $HOME/.kube
[root@master ~]#  cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]#  chown $(id -u):$(id -g) $HOME/.kube/config

生成環境變量

[root@master ~]# vim /root/.bashrc
export KUBECONFIG=/etc/kubernetes/admin.conf
3.3 node1 node2 節點加入集羣
[root@master ~]#  ansible nodes  -m shell -a ' kubeadm join 192.168.0.71:6443 --token hmktog.g9h8o0j6txhsmjkg --discovery-token-ca-cert-hash sha256:9a78ae921c338e1b9473647547018d848ee0e71d40bcadbb3c4e6a3c7c516465 '

4. 安裝網絡組建flannel

[root@master ~]# wget http://resource.blueicex.com/config//k8s/k8s-1.17/kube-flannel.yml
[root@master ~]# vim kube-flannel.yml 
...........
      - name: install-cni
        image: resource.blueicex.com:5000/coreos/flannel:v0.11.0-amd64
........... 
      containers:
      - name: kube-flannel
        image: resource.blueicex.com:5000/coreos/flannel:v0.11.0-amd64
...........
[root@master ~]#  kubectl apply -f kube-flannel.yml
podsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds-amd64 created
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   61m   v1.17.0
node1    Ready    <none>   19m   v1.17.0
node2    Ready    <none>   19m   v1.17.0
[root@master ~]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"} 

5. kubectl bash-completion 自動補全

[root@master ~]# kubectl completion -h
...........
Examples:
...........  
  # Installing bash completion on Linux
  ## If bash-completion is not installed on Linux, please install the 'bash-completion' package
  ## via your distribution's package manager.
  ## Load the kubectl completion code for bash into the current shell
  source <(kubectl completion bash)
  ## Write bash completion code to a file and source if from .bash_profile
  kubectl completion bash > ~/.kube/completion.bash.inc
  printf "
  # Kubectl shell completion
  source '$HOME/.kube/completion.bash.inc'
  " >> $HOME/.bash_profile
  source $HOME/.bash_profile
...........
[root@master ~]#  kubectl completion bash > ~/.kube/completion.bash.inc
[root@master ~]# echo source  ~/.kube/completion.bash.inc >> /root/.bashrc

————Blueicex 2020/05/31 14:12 [email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章