1. 传统方式,使用二进制。
  • 优点:能够让我们更清楚k8s的组件关系,可扩展性强,可定制化
  • 缺点:不利于新手部署
  1. 使用kubeadm安装
  • 优点:简单,高效
  • 缺点:所有的事情都被kudeadm工具帮我们部署了,可扩展性差,不可定制化

这里介绍使用kubeadm安装的步骤:

  1. 1.:安装kubelet,kubeadm,docker,kubeclt客户端,然后初始化,生成令牌,供node端加入
  2. 2.:安装kubelet,kubeadm,docker后,join 直接加入集群即可
  3. 3.:安装kubelet,kubeadm,docker后,join 直接加入集群即可
PS:在CentOS中安装K8S只能在Centos7的系统上进行安装,原因是Linux 内核的版本必须是 3.10 以上

master、node机器初始化


改IP,改hostname,改hosts,关机
1. ##### -----------------master:-------------------
2. 
3. echo "master">/etc/hostname

4. cat <<EOF >>/etc/hosts

5. 192.168.225.151 master

6. 192.168.225.152 node01

7. 192.168.225.153 node02

8. EOF

9. sed -i s#IPADDR=192.168.3.206#IPADDR=192.168.3.207#g /etc/sysconfig/network-scripts/ifcfg-ens33

10. sed -i s/UUID/#UUID/g /etc/sysconfig/network-scripts/ifcfg-ens33

11. reboot
12. 
13. ##### -----------------node01:-------------------
14. 
15. echo "node01">/etc/hostname

16. cat <<EOF >>/etc/hosts

17. 192.168.225.151 master

18. 192.168.225.152 node01

19. 192.168.225.153 node02

20. EOF

21. sed -i s#IPADDR=192.168.3.206#IPADDR=192.168.3.208#g /etc/sysconfig/network-scripts/ifcfg-ens33

22. sed -i s/UUID/#UUID/g  /etc/sysconfig/network-scripts/ifcfg-ens33

23. reboot
24. 
25. ##### -----------------node02:-------------------
26. 
27. echo "node02">/etc/hostname

28. cat <<EOF >>/etc/hosts

29. 192.168.225.151 master

30. 192.168.225.152 node01

31. 192.168.225.153 node02

32. EOF

33. sed -i s#IPADDR=192.168.3.206#IPADDR=192.168.3.209#g /etc/sysconfig/network-scripts/ifcfg-ens33

34. sed -i s/UUID/#UUID/g /etc/sysconfig/network-scripts/ifcfg-ens33

35. reboot
master节点
1. # 下载yum源

2. cd /etc/yum.repos.d/

3. wget  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4. yum -y install docker-ce-18.06.1.ce-3.el7

5. systemctl enable docker&& systemctl start docker
6. 
7. # kubernetes的yum源

8. cat <<EOF >/etc/yum.repos.d/kubernetes.repo

9. [kubernetes]

10. name=Kubernetes

11. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

12. enabled=1

13. gpgcheck=1

14. repo_gpgcheck=1

15. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

16. EOF
17. 
18. # kubelet是k8s的管理工具

19. # kubeadm是k8s的安装工具

20. # kubectl是k8s的客户端

21. # ----V1.13.3版本----

22. yum install -y kubelet-1.13.3-1.13.3-1.13.3-cni-0.6.0

23. # ----V1.15版本------

24. yum install -y kubelet kubeadm kubectl
25. 
26. # 忽略swap报错

27. cat <<EOF >/etc/sysconfig/kubelet

28. KUBELET_EXTRA_ARGS="--fail-swap-on=false"

29. EOF
30. 
31. # 更加转发等功能

32. cat <<EOF >/etc/sysctl.d/k8s.conf

33. net.bridge.bridge-nf-call-ip6tables =1

34. net.bridge.bridge-nf-call-iptables =1

35. net.ipv4.ip_forward =1

36. EOF

37. # 让配置生效

38. sysctl --system
39. 
40. # 开机自启动kubelet

41. systemctl enable kubelet
42. 
43. # -----------------1.13.3版本----------------

44. kubeadm init \

45. --apiserver-advertise-address=192.168.225.151 \

46. --image-repository registry.aliyuncs.com/google_containers \

47. --kubernetes-version v1.13.3 \

48. --service-cidr=10.1.0.0/16 \

49. --pod-network-cidr=10.2.0.0/16 \

50. --service-dns-domain=cluster.local \

51. --ignore-preflight-errors=Swap \

52. --ignore-preflight-errors=NumCPU
53. 
54. # ----------------1.15.0版本---------------

55. kubeadm init \

56. --apiserver-advertise-address=192.168.3.207 \

57. --image-repository registry.aliyuncs.com/google_containers \

58. --kubernetes-version v1.15.0 \

59. --service-cidr=10.1.0.0/16 \

60. --pod-network-cidr=10.2.0.0/16 \

61. --service-dns-domain=cluster.local \

62. --ignore-preflight-errors=Swap \

63. --ignore-preflight-errors=NumCPU
64. 
65. # ----------------------参数说明-------------------------

66. --apiserver-advertise-address:指定用Master的哪个IP地址与Cluster的其他节点通信。
67. 
68. --service-cidr:指定Service网络的范围,即负载均衡VIP使用的IP地址段。
69. 
70. --pod-network-cidr:指定Pod网络的范围,即Pod的IP地址段。
71. 
72. --image-repository:Kubenetes默认Registries地址是k8s.gcr.io,在国内并不能访问.io,在1.13版本中我们可以增加-image-repository参数,默认值是k8s.gcr.io,将其指定为阿里云镜像地址:registry.aliyuncs.com/google_containers。
73. 
74. --kubernetes-version=v1.13.3:指定要安装的版本号。
75. 
76. --ignore-preflight-errors=:忽略运行时的错误,例如上面目前存在[ERROR NumCPU]和[ERROR Swap],忽略这两个报错就是增加--ignore-preflight-errors=NumCPU和--ignore-preflight-errors=Swap的配置即可
77. 
78. ------------------------------kubeadm init干了什么?--------------------

79. [init]:指定版本进行初始化操作
80. 
81. [preflight]:初始化前的检查和下载所需要的Docker镜像文件
82. 
83. [kubelet-start]:生成kubelet的配置文件”/var/lib/kubelet/config.yaml”,没有这个文件kubelet无法启动,所以初始化之前的kubelet实际上启动失败。
84. 
85. [certificates]:生成Kubernetes使用的证书,存放在/etc/kubernetes/pki目录中。
86. 
87. [kubeconfig]:生成KubeConfig文件,存放在/etc/kubernetes目录中,组件之间通信需要使用对应文件。
88. 
89. [control-plane]:使用/etc/kubernetes/manifest目录下的YAML文件,安装Master组件。
90. 
91. [etcd]:使用/etc/kubernetes/manifest/etcd.yaml安装Etcd服务。
92. 
93. [wait-control-plane]:等待control-plan部署的Master组件启动。
94. 
95. [apiclient]:检查Master组件服务状态。
96. 
97. [uploadconfig]:更新配置
98. 
99. [kubelet]:使用configMap配置kubelet。
100. 
101. [patchnode]:更新CNI信息到Node上,通过注释的方式记录。
102. 
103. [mark-control-plane]:为当前节点打标签,打了角色Master,和不可调度标签,这样默认就不会使用Master节点来运行Pod。
104. 
105. [bootstrap-token]:生成token记录下来,后边使用kubeadm join往集群中添加节点时会用到
106. 
107. [addons]:安装附加组件CoreDNS和kube-proxy
108. 
109. # 系统提示步骤

110. mkdir -p $HOME/.kube

111. cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

112. chown $(id -u):$(id -g)/.kube/config
113. 
114. # 打通网络

115. cd ~

116. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
117. 
118. [github地址](https://github.com/coreos/flannel)
119. 
120. # 创建密钥

121. kubeadm token create --print-join-command
node节点
1. # 安装docker的yum源

2. cd /etc/yum.repos.d/

3. wget  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4. yum -y install docker-ce-18.06.1.ce-3.el7

5. systemctl enable docker&& systemctl start docker
6. 
7. # 写入k8s的yum源

8. cat <<EOF >/etc/yum.repos.d/kubernetes.repo

9. [kubernetes]

10. name=Kubernetes

11. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

12. enabled=1

13. gpgcheck=1

14. repo_gpgcheck=1

15. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

16. EOF
17. 
18. # 下载k8s的组件

19. ----V1.13.3版本----

20. yum install -y kubelet-1.13.3-1.13.3-1.13.3-cni-0.6.0

21. ----V1.15版本------

22. yum install -y kubelet kubeadm kubectl
23. 
24. # 忽略swap错误

25. cat <<EOF >/etc/sysconfig/kubelet

26. KUBELET_EXTRA_ARGS="--fail-swap-on=false"

27. EOF
28. 
29. # 开启系统转发

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. 
36. # 让配置生效

37. sysctl --system
38. 
39. # 设置服务开机自启动

40. systemctl enable kubelet
41. 
42. # 加入集群(令牌过期作废)

43. kubeadm join 192.168.3.207:6443--token a4645k.pq7e5e34y9sl9g53 --discovery-token-ca-cert-hash sha256:abd02c82cdefbcc2d17a2f53ec9b376e31d123ef33af880608d97f64b12a65f5  --ignore-preflight-errors=Swap