vi /etc/netplan/00-installer-config.yaml
:wq 保存好之后,netplan apply 应用一下(这个netplan 命令也是Ubuntu 20.04 新的命令)
同样方法修改好后保存退出后应用一下
用命令hostnamectl set-hostname 修改虚拟机主机名
接着点击上方这个按钮,开启多窗口模式
开启之后如图所示
虽然上面用命令更改了虚拟机主机名,笔者这边的会话窗口之前就连接了,所以导致3台主机都是root@k8s-master。关闭会话窗口后重新连接就会显示更改后的主机名了。
复制一下hostnamectl 然后点击右上角
发现3台虚拟机的 machine id 相同
用命令rm -f /etc/machine-id 删除
然后用命令systemd-machine-id-setup 自动生成
最后用命令hostnamectl 查看3台虚拟机Machine ID不一样了
使用多窗口模式用命令vim /etc/apt/sources.list 修改列表,把系统默认的注释掉,然后末尾添加如下地址,添加好之后,:wq保存
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
然后用命令执行apt-get update,然后执行 apt-get upgrade
执行完成
curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg
添加 Kubernetes apt 仓库
https://developer.aliyun.com/mirror/kubernetes 阿里云官方配置方法
使用多窗口执行相同的命令
做完这一步,可以退出多窗口模式了,剩下的基本在k8s-master主机上操作
kubeadm config print init-defaults > init.yaml
用命令vim init.yaml 修改配置文件,修改好之后保存退出。网址:registry.aliyuncs.com/google_containers
kubeadm init –config init.yaml | tee $HOME/k8s.txt
等待一会儿开始执行了
看到高亮成功字样,然后把这段都复制到txt文本中,等会到执行
节点初始化成功后,继续执行如下命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
echo “export KUBECONFIG=/etc/kubernetes/admin.conf” >> /root/.bashrc
source /root/.bashrc
部署网络前查看集群状态,此时因为网络问题,状态均异常。
#查看 node 状态,可以看到此时 master 状态仍然为 NotReady
kubectl get node
#查看 pod 状态
kubectl get pods –namespace=kube-system
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
部署成功,有个告警,不影响。部署结束后等待一段时间,再查看 node 和 pod 状态,若正常则单节点k8s-master 安装成功。
再次用kubectl get node查看状态,状态从先前的NotReady变为Ready了。说明部署成功了。
kubectl get pods –namespace=kube-system
在 k8s-node1 和 k8s-node2 上分别运行初始化 k8smaster 之后的回显
kubeadm join 10.10.75.10:6443 –token abcdef.0123456789abcdef –discovery-token-ca-cert-hash sha256:c9640c38d244dd3ade91a6c07c7c810611e03685ce264841abb867ca5530969e
kubectl get node 说明加入成功
编辑 /etc/hosts,添加如下映射关系
185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com
执行kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml
安装成功
kubectl get ns
kubectl get pod -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard
kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard
修改成如图所示,nodePort是要增加的,type是Cluster IP 改成 NodePort
查看修改后的配置
在浏览器输入地址:NodePort 端口可以用 master 或者 work 节点任 意一 IP+端口方式访问
获取 Token
kubectl -n kubernetes-dashboard get sa
kubectl -n kubernetes-dashboard get secrets
kubectl -n kubernetes-dashboard describe secrets kubernetes-dashboard-token-jbqgc
验证默认在 Dashboard 中没有相关权限
设置权限绑定(针对所有命名空间)
kubectl create clusterrolebinding dashboardadmin –serviceaccount kubernetes-dashboard:kubernetes-dashboard –clusterrole cluster-admin
验证权限,可以访问任何资源
设置权限(针对某一命名空间)
kubectl create rolebinding defaultadmin –serviceaccount kubernetes-dashboard:kubernetes-dashboard –clusterrole cluster-admin