文章目录
服务器配置使用kubekey部署k8s1. 操作系统基础配置2. 安装部署 K8s2.1 下载 KubeKey2.2 创建 K8s 集群部署配置文件
3. 验证 K8s 集群3.1 验证集群状态
4. 部署测试资源5.验证服务
服务器配置
主机名IPCPU内存系统盘数据盘用途vm-16-11-ubuntu192.168.9.131128256Gi500GB1TBk8s-mastervm-16-16-ubuntu192.168.9.132128256Gi500GB1TBk8s-mastervm-16-7-ubuntu192.168.9.133128256Gi500GB1TBk8s-master
实战环境涉及软件版本信息:
操作系统:Ubuntu 20.04 LTSK8s:v1.28.8Containerd:1.7.13KubeKey: v3.1.1
使用kubekey部署k8s
1. 操作系统基础配置
主机名、DNS解析、时钟同步、防火墙、系统依赖软件等忽略
apt-get install -y install curl socat conntrack ebtables ipset ipvsadm
2. 安装部署 K8s
2.1 下载 KubeKey
https://github.com/kubesphere/kubekey
下载最新版的 KubeKey
root@VM-16-7-ubuntu:~# mkdir ~/kubekey
root@VM-16-7-ubuntu:~# cd ~/kubekey
root@VM-16-7-ubuntu:~/kubekey# curl -sfL https://get-kk.kubesphere.io | sh -
Downloading kubekey v3.1.1 from https://github.com/kubesphere/kubekey/releases/download/v3.1.1/kubekey-v3.1.1-linux-amd64.tar.gz ...
Kubekey v3.1.1 Download Complete!
root@VM-16-7-ubuntu:~/kubekey# ll
total 116376
drwxr-xr-x 2 root root 4096 May 7 17:50 ./
drwx------ 7 root root 4096 May 7 17:49 ../
-rwxr-xr-x 1 root root 81950729 Apr 16 12:30 kk*
-rw-r--r-- 1 root root 37206726 May 7 17:50 kubekey-v3.1.1-linux-amd64.tar.gz
查看 KubeKey 支持的 Kubernetes 版本列表 ./kk version --show-supported-k8s
root@VM-16-7-ubuntu:~/kubekey# ./kk version --show-supported-k8s
...
v1.28.0
v1.28.1
v1.28.2
v1.28.3
v1.28.4
v1.28.5
v1.28.6
v1.28.7
v1.28.8
v1.29.0
v1.29.1
v1.29.2
v1.29.3
root@VM-16-7-ubuntu:~/kubekey#
root@VM-16-7-ubuntu:~/kubekey# ./kk create config -f k8s-v1288.yaml --with-kubernetes v1.28.8
Generate KubeKey config file successfully
2.2 创建 K8s 集群部署配置文件
创建集群配置文件
本文选择了 K8s v1.28.8。因此,指定配置文件名称为 k8s-v1288.yaml/
root@VM-16-7-ubuntu:~/kubekey# ./kk create cluster -f k8s-v1288.yaml
_ __ _ _ __
| | / / | | | | / /
| |/ / _ _| |__ ___| |/ / ___ _ _
| \| | | | '_ \ / _ \ \ / _ \ | | |
| |\ \ |_| | |_) | __/ |\ \ __/ |_| |
\_| \_/\__,_|_.__/ \___\_| \_/\___|\__, |
__/ |
|___/
17:56:57 CST [GreetingsModule] Greetings
17:56:58 CST message: [VM-16-16-ubuntu]
Greetings, KubeKey!
17:56:58 CST message: [VM-16-7-ubuntu]
Greetings, KubeKey!
17:56:58 CST message: [VM-16-11-ubuntu]
Greetings, KubeKey!
17:56:58 CST success: [VM-16-16-ubuntu]
17:56:58 CST success: [VM-16-7-ubuntu]
17:56:58 CST success: [VM-16-11-ubuntu]
17:56:58 CST [NodePreCheckModule] A pre-check on nodes
17:56:58 CST success: [VM-16-16-ubuntu]
17:56:58 CST success: [VM-16-7-ubuntu]
17:56:58 CST success: [VM-16-11-ubuntu]
17:56:58 CST [ConfirmModule] Display confirmation form
+-----------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| name | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker | containerd | nfs client | ceph client | glusterfs client | time |
+-----------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| VM-16-7-ubuntu | y | y | y | y | y | y | y | y | | | | y | | | CST 17:56:58 |
| VM-16-11-ubuntu | y | y | y | y | y | y | y | y | | | | y | | | CST 17:56:58 |
| VM-16-16-ubuntu | y | y | y | y | y | y | y | y | | | | y | | | CST 17:56:58 |
+-----------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
This is a simple check of your environment.
Before installation, ensure that your machines meet all requirements specified at
https://github.com/kubesphere/kubekey#requirements-and-recommendations
Continue this installation? [yes/no]: yes
17:57:06 CST success: [LocalHost]
17:57:06 CST [NodeBinariesModule] Download installation binaries
17:57:06 CST message: [localhost]
downloading amd64 kubeadm v1.28.8 ...
修改配置文件 采用 3 个节点同时作为 control-plane、etcd 和 worker 节点。
编辑配置文件 k8s-v1288.yaml,主要修改 kind: Cluster 小节的相关配置
修改 kind: Cluster 小节中 hosts 和 roleGroups 等信息,修改说明如下。
hosts:指定节点的 IP、ssh 用户、ssh 密码、ssh 端口roleGroups:指定 3 个 etcd、control-plane 节点,复用相同的机器作为 3 个 worker 节点internalLoadbalancer:启用内置的 HAProxy 负载均衡器domain:可自定义域名clusterName:可使用默认值 cluster.localautoRenewCerts:该参数可以实现证书到期自动续期,默认为 truecontainerManager:使用 containerd
部署完成需要大约 10-20 分钟左右,会在终端上看到类似于下面的输出。
daemonset.apps/calico-node created
deployment.apps/calico-kube-controllers created
18:12:37 CST skipped: [vm-16-16-ubuntu]
18:12:37 CST skipped: [vm-16-11-ubuntu]
18:12:37 CST success: [vm-16-7-ubuntu]
18:12:37 CST [ConfigureKubernetesModule] Configure kubernetes
18:12:37 CST success: [vm-16-7-ubuntu]
18:12:37 CST skipped: [vm-16-11-ubuntu]
18:12:37 CST skipped: [vm-16-16-ubuntu]
18:12:37 CST [ChownModule] Chown user $HOME/.kube dir
18:12:37 CST success: [vm-16-16-ubuntu]
18:12:37 CST success: [vm-16-11-ubuntu]
18:12:37 CST success: [vm-16-7-ubuntu]
18:12:37 CST [AutoRenewCertsModule] Generate k8s certs renew script
18:12:37 CST success: [vm-16-16-ubuntu]
18:12:37 CST success: [vm-16-11-ubuntu]
18:12:37 CST success: [vm-16-7-ubuntu]
18:12:37 CST [AutoRenewCertsModule] Generate k8s certs renew service
18:12:37 CST success: [vm-16-16-ubuntu]
18:12:37 CST success: [vm-16-7-ubuntu]
18:12:37 CST success: [vm-16-11-ubuntu]
18:12:37 CST [AutoRenewCertsModule] Generate k8s certs renew timer
18:12:38 CST success: [vm-16-16-ubuntu]
18:12:38 CST success: [vm-16-7-ubuntu]
18:12:38 CST success: [vm-16-11-ubuntu]
18:12:38 CST [AutoRenewCertsModule] Enable k8s certs renew service
18:12:38 CST success: [vm-16-16-ubuntu]
18:12:38 CST success: [vm-16-11-ubuntu]
18:12:38 CST success: [vm-16-7-ubuntu]
18:12:38 CST [SaveKubeConfigModule] Save kube config as a configmap
18:12:38 CST success: [LocalHost]
18:12:38 CST [AddonsModule] Install addons
18:12:38 CST success: [LocalHost]
18:12:38 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete.
Please check the result using the command:
kubectl get pod -A
3. 验证 K8s 集群
3.1 验证集群状态
查看集群节点信息
root@VM-16-7-ubuntu:~# kubectl get nodes -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
vm-16-11-ubuntu Ready control-plane,worker 9m46s v1.28.8 172.19.16.11
vm-16-16-ubuntu Ready control-plane,worker 9m43s v1.28.8 172.19.16.16
vm-16-7-ubuntu Ready control-plane,worker 10m v1.28.8 172.19.16.7
4. 部署测试资源
root@VM-16-7-ubuntu:~# kubectl create deployment nginx --image=nginx:alpine --replicas=2
deployment.apps/nginx created
root@VM-16-7-ubuntu:~# kubectl create service nodeport nginx --tcp=80:80
service/nginx created
root@VM-16-7-ubuntu:~# kubectl get deployment -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 2/2 2 2 21s nginx nginx:alpine app=nginx
root@VM-16-7-ubuntu:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-b4ccb96c6-q5c52 1/1 Running 0 21s 10.233.123.1 vm-16-7-ubuntu
nginx-b4ccb96c6-wgjh4 1/1 Running 0 21s 10.233.96.1 vm-16-16-ubuntu
5.验证服务
验证直接访问 Pod
root@VM-16-7-ubuntu:~# curl -I http://10.233.96.1
HTTP/1.1 200 OK
Server: nginx/1.25.5
Date: Tue, 07 May 2024 10:24:00 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 16 Apr 2024 15:47:06 GMT
Connection: keep-alive
ETag: "661e9d7a-267"
Accept-Ranges: bytes
root@VM-16-7-ubuntu:~# curl -I http://10.233.123.1
HTTP/1.1 200 OK
Server: nginx/1.25.5
Date: Tue, 07 May 2024 10:24:10 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 16 Apr 2024 15:47:06 GMT
Connection: keep-alive
ETag: "661e9d7a-267"
Accept-Ranges: bytes
验证访问 Nodeport
root@VM-16-7-ubuntu:~# curl http://172.19.16.7:31377
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
Commercial support is available at
Thank you for using nginx.
精彩文章
发表评论