kubernetes v1.24.0部署
基础环境配置
kubernetes环境配置
主机名 | cpu | 内存 | 存储 | 网络 |
---|---|---|---|---|
master | 2 | 4 | 200 | 192.168.10.29 |
node | 2 | 4 | 200 | 192.168.10.30 |
部署思路
一、配置操作系统和kubernetes运行环境
二、安装sealos
三、安装kubernetesv1.24.0
四、安装helm
五、安装dashboard
六、测试
配置操作系统
1、设置yum源
wget -O /etc/yum.repos.d/centos-base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2、修改主机名
hostnamectl set-hostname your-own-nodename
3、升级内核
[root@vm1 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@vm1 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-5.el7.elrepo.noarch.rpm
[root@vm1 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
[root@vm1 ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y
[root@vm1 ~]# sed -i 's/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/' /etc/default/grub
[root@vm1 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@vm1 ~]# reboot
4、删除旧的内核(可选)
5、免交互
添加hosts文件
echo -e '192.168.10.29 master\n192.168.10.30 node' >>/etc/hosts
配置ssh密钥
ssh-keygen -t rsa
ssh-copy-id master
ssh-copy-id node
6、关闭ipv6
7、时间同步(可选)
配置kubernetes
使用sealos来完成快速安装
1、安装sealos
wget -c https://sealyun-home.oss-cn-beijing.aliyuncs.com/sealos-4.0/latest/sealos-amd64 -O sealos && \
chmod +x sealos && mv sealos /usr/bin
2、创建kubernetes集群
sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1 \
--masters 192.168.10.29 \
--nodes 192.168.10.30 -p [your-ssh-passwd]
3、部署calicoctl
查看calico的api资源
kubectl api-resources |grep calico
这些api资源是属于calico的,因此不建议使用kubectl来管理,推荐安装calicoctl来管理这些api资源。将calicoctl安装为kubectl的插件:
1)获取calicoctl
wget https://github.com/projectcalico/calico/releases/download/v3.22.1/calicoctl-linux-amd64
chmod +x calicoctl-linux-amd64
mv calicoctl-linux-amd64 /usr/bin/calicoctl
2) 加载calico环境变量
export CALICO_DATASTORE_TYPE=kubernetes
export CALICO_KUBECONFIG=~/.kube/config
3) 测试
calicoctl node status
calicoctl ipam show
部署dashboard
部署步骤参见https://github.com/kubernetes/dashboard
1、执行命令部署dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.0/aio/deploy/recommended.yaml
2、查看部署状态
kubectl get pod -n kubernetes-dashboard
3、查看状态信息
kubectl get pods -n kubernetes-dashboard -o wide
4、更改访问策略
改为NodePort访问,默认是API Server,比较麻烦,改为NodePort可以直接用IP地址访问
1) 查看当前访问策略
kubectl -n kubernetes-dashboard get service kubernetes-dashboard
可以看到当前的TYPE
字段显示为ClusterIP
2) 更改配置
编辑配置,将其中的ClusterIP改为NodePort即可,过一会配置会自动变化。
kubectl -n kubernetes-dashboard edit service kubernetes-dashboard
! 千万别改错
直接滚动至最后一页,倒数第三行。
找到字段 type: ClusterIP
修改为:type: NodePort
页面不动,匹配如下字段:
ports:
- port: 443
protocol: TCP
targetPort: 8443
修改添加为:
ports:
- nodePort: 30081
port: 443
protocol: TCP
targetPort: 8443
保存并退出。
3) 查看状态
kubectl -n kubernetes-dashboard get service kubernetes-dashboard
可以看到TYPE
字段显示为NodePort
,PORT(S)
字段显示为443:30081/TCP
4) 访问地址
https://192.168.10.29:30081
注意:使用https协议访问,使用http协议访问会访问不到目标地址。
5、配置token
不要关心token是什么
在继续之前,请确保你知道自己在做什么。向Dashboard的服务账户授予管理员权限可能存在安全风险。
本实例中创建的是具备最高权限的用户并创建与该用户绑定的不记名令牌
节点锁定master
1) 创建admin-user.yaml
填入以下内容:
&&
2) 创建服务账户和ClusterRoleBinding
注意:这意味着你创建了一个admin-user的角色并授予了集群最高权限。
kubectl create -f admin-user.yaml
3) 获取不记名令牌
现在我们需要找到我们可以用来登录的令牌。执行以下命令:
kubectl -n kubernetes-dashboard create token admin-user
如果你希望保存token在master
节点中,请使用以下命令:
kubectl -n kubernetes-dashboard create token admin-user >admin-user-token && cat admin-user-token
它应该打印如下内容:
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXY1N253Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIwMzAzMjQzYy00MDQwLTRhNTgtOGE0Ny04NDllZTliYTc5YzEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Z2JrQlitASVwWbc-s6deLRFVk5DWD3P_vjUFXsqVSY10pbjFLG4njoZwh8p3tLxnX_VBsr7_6bwxhWSYChp9hwxznemD5x5HLtjb16kI9Z7yFWLtohzkTwuFbqmQaMoget_nYcQBUC5fDmBHRfFvNKePh_vSSb2h_aYXa8GV5AcfPQpY7r461itme1EXHQJqv-SN-zUnguDguCTjD80pFZ_CmnSE1z9QdMHPB8hoB4V68gtswR1VLa6mSYdgPwCHauuOobojALSaMc3RH7MmFUumAgguhqAkX3Omqd3rJbYOMRuMjhANqd08piDC3aIabINX6gP5-Tuuw2svnV6NYQ
现在复制令牌并将其粘贴到Enter token
登录屏幕的字段中。
单击Sign in
按钮,就是这样。你现在以管理员身份登录。
要了解有关如何在 Kubernetes 中授予/拒绝权限的更多信息,请阅读官方身份验证和授权文档。
比方说如何删除管理员 ServiceAccount
和 ClusterRoleBinding
.
部署helm
sealos run labring/helm:v3.8.2 # 安装helm
部署openebs(可选)
sealos run labring/openebs:v1.9.0 # 安装openebs
测试
1、生成yaml配置文件
kubectl create deployment web --image=nginx -o yaml --dry-run=client >>nginx.yaml
2、使用yaml文件进行部署
kubectl apply -f nginx.yaml
3、查看创建的pod
kubectl get pods
4、对外暴露访问端口,生成yaml配置文件
kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml >>nginx-web1.yaml
5、查看pod和svc
kubectl get pod,svc
注意:service/web1
项中的PORT(S)
字段
80:ports/TCP
6、访问nginx服务
虚拟机IP为192.168.10.29,对外暴露端口为步骤五中获取的ports
则访问地址: http://192.168.10.29:ports