Skip to content

Commit 2808873

Browse files
committed
deploy k8s cluster
1 parent 6410508 commit 2808873

File tree

1 file changed

+200
-0
lines changed

1 file changed

+200
-0
lines changed

kuberbetes/k8s 集群搭建.md

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
# 虚拟机部署k8s集群
2+
3+
> [域名ip查询] https://ip.tool.chinaz.com/raw.githubusercontent.com
4+
5+
```sh
6+
# 关闭防火墙
7+
[root@k8s-master ~]# systemctl stop firewalld
8+
# 禁用开机启动
9+
[root@k8s-master ~]# systemctl disable firewalld
10+
11+
# 禁用交换分区
12+
[root@k8s-master ~]# swapoff -a
13+
14+
# 禁用selinux
15+
[root@k8s-master ~]# setenforce 0
16+
17+
# 查看状态
18+
[root@k8s-master ~]# getenforce 0
19+
[root@k8s-master ~]# vim /etc/selinux/config
20+
#永久关闭selinux,在文档最后加下面这句
21+
SELINUX=disabled
22+
23+
# 更改hostname名称
24+
[root@k8s-master ~]# hostnamectl set-hostname $hostname
25+
26+
# 建立IP与主机名的映射
27+
[root@k8s-master ~]# vim /etc/hosts
28+
29+
172.20.73.73 k8s-master
30+
172.20.75.230 k8s-node1
31+
172.20.71.151 k8s-node2
32+
33+
# 时间同步
34+
[root@k8s-master ~]# yum -y install ntp
35+
[root@k8s-master ~]# systemctl start ntpd
36+
[root@k8s-master ~]# systemctl enable ntpd
37+
38+
# 将桥接的IPv4流量传递到iptables的链
39+
[root@k8s-master ~]# touch /etc/sysctl.d/k8s.conf
40+
41+
[root@k8s-master ~]# cat >> /etc/sysctl.d/k8s.conf <<EOF
42+
net.bridge.bridge-nf-call-ip6tables=1
43+
net.bridge.bridge-nf-call-iptables=1
44+
net.ipv4.ip_forward=1
45+
vm.swappiness=0
46+
EOF
47+
48+
# 加载系统参数
49+
[root@k8s-master ~]# sysctl --system
50+
51+
# 安装docker,k8s驱动
52+
[root@k8s-master ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
53+
54+
[root@k8s-master ~]# yum list docker-ce --showduplicates | sort -r
55+
56+
[root@k8s-master ~]# yum -y install docker-ce docker-ce-cli containerd.io
57+
58+
[root@k8s-master ~]# systemctl start docker
59+
# 设置开机启动
60+
[root@k8s-master ~]# systemctl enable docker
61+
62+
[root@k8s-master ~]# vim /etc/docker/daemon.json
63+
64+
{
65+
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
66+
"exec-opts": ["native.cgroupdriver=systemd"]
67+
}
68+
69+
[root@k8s-master ~]# systemctl restart docker
70+
[root@k8s-master ~]# docker info |tail -5
71+
[root@k8s-master ~]# docker info | grep -i "Cgroup Driver"
72+
73+
# 使用kubeadm安装k8s及相关工具
74+
[root@k8s-master ~]# cat >/etc/yum.repos.d/kubernetes.repo <<EOF
75+
[kubernetes]
76+
name=Kubernetes
77+
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
78+
enabled=1
79+
gpgcheck=0
80+
repo_gpgcheck=0
81+
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
82+
EOF
83+
84+
# 查看可安装版本
85+
[root@k8s-master ~]# yum list --showduplicates | grep kubeadm
86+
87+
# 安装指定版本
88+
[root@k8s-master ~]# yum -y install kubelet-1.22.6 kubeadm-1.22.6 kubectl-1.22.6
89+
90+
# 开机启动
91+
[root@k8s-master ~]# systemctl enable kubelet
92+
93+
# 初始化master节点(MASTER)
94+
[root@k8s-master ~]# kubeadm init --apiserver-advertise-address=8.141.175.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.22.6 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
95+
96+
[root@k8s-master ~]# mkdir -p $HOME/.kube
97+
[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
98+
[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config
99+
[root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
100+
101+
[root@k8s-master ~]# scp /etc/kubernetes/admin.conf k8s-node1:/etc/kubernetes/admin.conf
102+
[root@k8s-master ~]# scp /etc/kubernetes/admin.conf k8s-node1:/etc/kubernetes/admin.conf
103+
104+
# 将node节点加入集群,要在node节点机器上执行,node结点需要安装k8s相关组件,即kubeadm init之前的操作都需要执行
105+
[root@k8s-master ~]# kubeadm join 172.20.73.73:6443 --token 0416zv.g44s1xnloyi8xjvm --discovery-token-ca-cert-hash sha256:37349a9729af525fe5716148545561d447b0a06ff6f9e76c4bc8269c79748017
106+
107+
108+
# 部署容器网络,CNI网络插件
109+
110+
#执行下面这条命令在线配置pod网络,因为是国外网站,所以可能报错,测试去http://ip.tool.chinaz.com/网站查到
111+
#域名raw.githubusercontent.com对应的IP,把域名解析配置到/etc/hosts文件,然后执行在线配置pod网络,多尝试几次即可成功。
112+
[root@k8s-master ~]# echo "185.199.110.133 raw.githubusercontent.com" >> /etc/hosts
113+
114+
[root@k8s-master ~]# kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
115+
116+
# 查看运行状态
117+
[root@k8s-master ~]# kubectl get pods -n kube-system
118+
NAME READY STATUS RESTARTS AGE
119+
coredns-7f6cbbb7b8-2gwkr 1/1 Running 0 7m57s
120+
coredns-7f6cbbb7b8-lwx8s 1/1 Running 0 7m57s
121+
etcd-k8s-master 1/1 Running 1 8m11s
122+
kube-apiserver-k8s-master 1/1 Running 1 8m12s
123+
kube-controller-manager-k8s-master 1/1 Running 1 8m11s
124+
kube-proxy-2wbds 1/1 Running 0 4m37s
125+
kube-proxy-9lqxn 1/1 Running 0 7m57s
126+
kube-proxy-jjbtr 1/1 Running 0 4m47s
127+
kube-scheduler-k8s-master 1/1 Running 1 8m11s
128+
129+
# 验证集群是否正常,要注意看对外暴露的端口号(自动生成的)
130+
[root@k8s-master ~]# kubectl create deployment httpd --image=httpd
131+
deployment.apps/httpd created
132+
[root@k8s-master ~]# kubectl expose deployment httpd --port=80 --type=NodePort
133+
service/httpd exposed
134+
[root@k8s-master ~]# kubectl get pod,svc
135+
NAME READY STATUS RESTARTS AGE
136+
pod/httpd-757fb56c8d-zq2fj 1/1 Running 0 17s
137+
138+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
139+
service/httpd NodePort 10.106.137.56 <none> 80:31537/TCP 7s
140+
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9m9s
141+
142+
# 安装kubeboard
143+
[root@k8s-master k8s-yaml]# kubectl apply -f https://kuboard.cn/install-script/kuboard-beta.yaml
144+
deployment.apps/kuboard created
145+
service/kuboard created
146+
serviceaccount/kuboard-user created
147+
clusterrolebinding.rbac.authorization.k8s.io/kuboard-user created
148+
serviceaccount/kuboard-viewer created
149+
clusterrolebinding.rbac.authorization.k8s.io/kuboard-viewer created
150+
[root@k8s-master k8s-yaml]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}')
151+
Name: kuboard-user-token-6p88l
152+
Namespace: kube-system
153+
Labels: <none>
154+
Annotations: kubernetes.io/service-account.name: kuboard-user
155+
kubernetes.io/service-account.uid: a980558e-fd23-4e0e-a757-c7bac989a34d
156+
157+
Type: kubernetes.io/service-account-token
158+
159+
Data
160+
====
161+
ca.crt: 1099 bytes
162+
namespace: 11 bytes
163+
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlM4cFhRbW9Yb25HdGxzSm9HUWQwXzlfeUxXZVZ5UWZ4VHVxQUxwSnl3UXcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJvYXJkLXVzZXItdG9rZW4tNnA4OGwiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYTk4MDU1OGUtZmQyMy00ZTBlLWE3NTctYzdiYWM5ODlhMzRkIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmt1Ym9hcmQtdXNlciJ9.q2fnZZN1-BN5QsLeoai1vQ3IkiuIeUTGt-lncgjFBZILxDoNRRQDlvIxPIvYu4PHGpbUf295vLRc5y0CvNizWAZqenb3exkuM4ahF0mNU68B2NYBnZ3No86GiFNj-pgrKpeaECHHERZn5I3h3aKupzYHlLgDes3-UATurf3UsgpUO7Gbp6xcT8OVDK_y81JnQLwXDIKEF09CbzgjF8EOn2_Gbi-zyapZQjVV3sDaRPs9-cXLRrD1n2FmRtYVb0fSCu_V0nnn_5gIy1OlI5wEHfUgrFOtEAg6B38AYyQamzQqPT6YIehpur1C7g9c5VCriOH1aAgj8WSAB31haeuvFw
164+
[root@k8s-master k8s-yaml]# kubectl get svc -n kube-system
165+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
166+
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 76m
167+
kuboard NodePort 10.102.159.239 <none> 80:32567/TCP 21s
168+
169+
# 访问ip:32567
170+
```
171+
172+
#### 清除node结点环境
173+
```sh
174+
#!/bin/sh
175+
kubeadm reset
176+
177+
systemctl stop kubelet
178+
179+
systemctl stop docker
180+
181+
rm -rf /var/lib/cni/
182+
183+
rm -rf /var/lib/kubelet/*
184+
185+
rm -rf /etc/cni/
186+
187+
ifconfig cni0 down
188+
189+
ifconfig flannel.1 down
190+
191+
ifconfig docker0 down
192+
193+
ip link delete cni0
194+
195+
ip link delete flannel.1
196+
197+
systemctl start docker
198+
199+
systemctl start kubelet
200+
```

0 commit comments

Comments
 (0)