分享

Centos 8安装Kubernetes 1.16.3 环境搭建实战(ipvs篇)

 黄爸爸好 2020-03-11

Centos 8安装Kubernetes 1.16.3 环境搭建实战(ipvs篇)

原创 置顶 engchina 最后发布于2019-12-01 02:11:32 阅读数 221 收藏
分类专栏: Kubernetes
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

使用 kubeadm 搭建Kubernetes 1.16.3单节点集群实战(基于Centos 8)

详细步骤:

1,修改hosts

vi /etc/hosts

追加enp0s8的ip和hostname,例如

192.168.56.163 k8stest

2,创建install-k8s.sh

  1. #!/bin/bash
  2. echo "Start"
  3. export IP_ADDR=$(ip addr show enp0s8 | grep -Po 'inet \K[\d.]+')
  4. echo $IP_ADDR
  5. sudo su - << FOE
  6. # Stop firewall and selinux
  7. sudo systemctl disable --now firewalld
  8. sudo /usr/sbin/setenforce 0
  9. sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
  10. # Ignore Swap Error while installing kubernetes cluster with Swap
  11. cat<<EOF > /etc/sysconfig/kubelet
  12. KUBELET_EXTRA_ARGS=--fail-swap-on=false
  13. EOF
  14. # Install neccessary system tools
  15. sudo yum install -y dnf-utils
  16. # Open ipvs
  17. cat <<EOF >/etc/sysconfig/modules/ipvs.modules
  18. modprobe -- ip_vs
  19. modprobe -- ip_vs_rr
  20. modprobe -- ip_vs_wrr
  21. modprobe -- ip_vs_sh
  22. modprobe -- nf_conntrack_ipv4
  23. EOF
  24. sudo chmod 755 /etc/sysconfig/modules/ipvs.modules
  25. sudo bash /etc/sysconfig/modules/ipvs.modules
  26. sudo lsmod | grep -e ip_vs -e nf_conntrack_ipv4
  27. sudo dnf install ipset ipvsadm -y
  28. # Config iptables
  29. echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf
  30. cat<<EOF > /etc/sysctl.d/k8s.conf
  31. net.bridge.bridge-nf-call-ip6tables = 1
  32. net.bridge.bridge-nf-call-iptables = 1
  33. net.ipv4.ip_forward = 1
  34. EOF
  35. sudo modprobe br_netfilter
  36. sudo sysctl --system
  37. # Add Docker Repo
  38. sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  39. # Install Docker-CE
  40. sudo dnf makecache timer
  41. sudo dnf -y install --nobest docker-ce
  42. # Enable Docker
  43. sudo systemctl enable --now docker
  44. # Config Docker
  45. if [ ! -d "/etc/docker" ]; then
  46. mkdir /etc/docker
  47. fi
  48. cat<<EOF > /etc/docker/daemon.json
  49. {
  50. "exec-opts": ["native.cgroupdriver=systemd"],
  51. "log-driver": "json-file",
  52. "log-opts": {
  53. "max-size": "100m"
  54. },
  55. "storage-driver": "overlay2",
  56. "storage-opts": [
  57. "overlay2.override_kernel_check=true"
  58. ],
  59. "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
  60. }
  61. EOF
  62. sudo systemctl daemon-reload
  63. sudo systemctl restart docker
  64. # Add Kubernetes Repo
  65. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  66. [kubernetes]
  67. name=Kubernetes
  68. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
  69. enabled=1
  70. gpgcheck=1
  71. repo_gpgcheck=1
  72. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  73. EOF
  74. sudo dnf install -y kubeadm kubectl kubelet
  75. sudo systemctl enable kubelet
  76. # Create Kubernetes Cluster
  77. kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=$IP_ADDR --kubernetes-version stable-1.16 --ignore-preflight-errors=Swap --image-repository registry.aliyuncs.com/google_containers
  78. FOE
  79. sleep 10s
  80. # Add User to docker group
  81. sudo usermod -a -G docker $(id -nu)
  82. # Create .kube folder
  83. if [ -f $HOME/.kube/config ]; then
  84. rm -rf $HOME/.kube/config
  85. fi
  86. if [ ! -d $HOME/.kube ]; then
  87. mkdir $HOME/.kube
  88. fi
  89. # Copy Kubernetes config file
  90. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  91. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  92. # Apply network plugin
  93. result=1
  94. while [ $result -ne 0 ]
  95. do
  96. kubectl apply -f https://raw./coreos/flannel/master/Documentation/kube-flannel.yml
  97. result=$?
  98. sleep 10s
  99. done
  100. #kubectl apply -f https://docs./v3.10/manifests/calico.yaml
  101. # Taint master node
  102. kubectl taint nodes --all node-role.kubernetes.io/master-
  103. echo "Complete"

3,执行install-k8s.sh

./install-k8s.sh

4,查看nodes

kubectl get nodes

结果

  1. NAME STATUS ROLES AGE VERSION
  2. k8stest Ready master 2m58s v1.16.3

5,查看所用pods

kubectl get pods -A

结果

  1. NAMESPACE NAME READY STATUS RESTARTS AGE
  2. kube-system coredns-58cc8c89f4-7nrwd 1/1 Running 0 2m56s
  3. kube-system coredns-58cc8c89f4-bfqbl 1/1 Running 0 2m56s
  4. kube-system etcd-k8stest 1/1 Running 0 2m12s
  5. kube-system kube-apiserver-k8stest 1/1 Running 0 115s
  6. kube-system kube-controller-manager-k8stest 1/1 Running 0 118s
  7. kube-system kube-flannel-ds-amd64-5z9l2 1/1 Running 0 2m54s
  8. kube-system kube-proxy-twc54 1/1 Running 0 2m56s
  9. kube-system kube-scheduler-k8stest 1/1 Running 0 112s

6,kube-proxy开启ipvs
修改ConfigMap的kube-system/kube-proxy中的config.conf,mode: “ipvs”

kubectl edit cm kube-proxy -n kube-system

之后重启各个节点上的kube-proxy pod:

kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'

7,发布一个nginx deployment,进行检证。使用centos用户执行。​​​​​​​

发布

kubectl create deployment nginx --image=nginx

查看deployments

kubectl get deployments

查看deployments的结果

  1. NAME READY UP-TO-DATE AVAILABLE AGE
  2. nginx 1/1 1 1 2m13s

查看pods

kubectl get pods -o wide

查看pods的结果

  1. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  2. nginx-86c57db685-pgmwq 1/1 Running 0 2m25s 10.244.0.4 k8stest <none> <none>

用curl访问nginx应用(IP是查看pods的结果的IP值)

curl 10.244.0.4

curl的结果

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Welcome to nginx!</title>
  5. <style>
  6. body {
  7. width: 35em;
  8. margin: 0 auto;
  9. font-family: Tahoma, Verdana, Arial, sans-serif;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <h1>Welcome to nginx!</h1>
  15. <p>If you see this page, the nginx web server is successfully installed and
  16. working. Further configuration is required.</p>
  17. <p>For online documentation and support please refer to
  18. <a href="http:///"></a>.<br/>
  19. Commercial support is available at
  20. <a href="http:///"></a>.</p>
  21. <p><em>Thank you for using nginx.</em></p>
  22. </body>
  23. </html>

8,为了操作方便,在~/.bashrc中加入如下内容

  1. source <(kubectl completion bash)
  2. alias k=kubectl
  3. complete -F __start_kubectl k

然后执行

source ~/.bashrc

这样就可以用k代替kubectl命令了。

恭喜,kubernetes 1.16.3正常安装完成。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多