# k8s部署(Master节点)
作者平时也得工作和干活~,尽量在有空的时候不断的去更新该博客...
如果有相关问题或反馈,可以加作者微信(微信号:SPE3SRU3STAY)
# 四项准备工作:
- 本机Hostname解析
- 网络开关设置
- 关闭Swap分区
- Docker Cgroup Driver的修改
# 本机Hostname解析
1.变更主机名(假定我们把192.168.0.1
这台机器的主机名叫做master
,现在修改主机名)
hostnamectl set-hostname master
2.更改/etc/hostname
echo "master" > /etc/hostname
3.更改/etc/hosts,在localhost后面追加主机名:
127.0.0.1 localhost.localdomain localhost master
# 进行网络设置
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
# 关闭Swap分区
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 修改Docker基座的运行模式
假定您按照上一篇
准备工作的文章
中,调用我的远程脚本安装了Docker的基座服务,那么这一步您将什么都不用去做。
# 生成Kubernetes Master节点的初始化配置文件
kubeadm config print init-defaults > config.yaml
# 修改这个我们生成出来的config.yaml文件
vim ./config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.0.1 #修改了这里(修改为当前节点的IP地址)
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
imagePullPolicy: IfNotPresent
name: master #修改了这里(修改为上文中我们预先设定好的hostname)
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers #修改了这里(为了国内加速,不然无法直接下载到Google的对应资源)
kind: ClusterConfiguration
kubernetesVersion: 1.22.0
networking:
dnsDomain: cluster.local
serviceSubnet: 10.100.0.0/16 #修改了这里(我们认为设定的CIDR)
scheduler: {}
# 开始拉取Kubernetes所需的基础运行镜像
kubeadm config images pull --config=config.yaml
查看镜像是否下载好
docker images
#下载完成之后的镜像应该是这样的(数量和名称要核对清楚):
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver v1.22.0 838d692cbe28 3 months ago 128MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager v1.22.0 5344f96781f4 3 months ago 122MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy v1.22.0 bbad1636b30d 3 months ago 104MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler v1.22.0 3db3d153007f 3 months ago 52.7MB
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd 3.5.0-0 004811815584 4 months ago 295MB
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns v1.8.4 8d147537fb7d 5 months ago 47.6MB
registry.cn-hangzhou.aliyuncs.com/google_containers/pause 3.5 ed210e3e4a5b 7 months ago 683kB
如果镜像下载完成,就可以进入第三阶段了!
# 执行安装命令
到此时开始,才是真正的动手安装
kubeadm init --config=config.yaml
如果中间出现了安装错误,或者人为搞错了操作,执行如下命令
可以清空所有kubeadm的操作缓存
,然后进行重装。命令为:kubeadm reset
出现如下提示时,代表安装成功:
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.0.1:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:75b93879944f5e2055e97fff426a48a6fe5c0eb91de1739886fa5864d0b12bf6
# 为Kubectl工具添加认证环境变量
在/etc/profile中最后面追加以下内容
export KUBECONFIG=/etc/kubernetes/admin.conf
(注意) 这里就是上文安装成功时,提示我们需要添加的环境变量
添加完成后,重新加载环境变量
source /etc/profile
然后测试kubectl命令
kubectl get nodes
(返回结果)
NAME STATUS ROLES AGE VERSION
master NotReady control-plane,master 4m38s v1.22.3
查看master节点上运行的容器
kubectl get pods --all-namespaces
(返回结果)
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7d89d9b6b8-6m6mg 0/1 Pending 0 7m1s
kube-system coredns-7d89d9b6b8-fjgl7 0/1 Pending 0 7m1s
kube-system etcd-master 1/1 Running 2 (5m14s ago) 7m5s
kube-system kube-apiserver-master 1/1 Running 1 (5m15s ago) 7m5s
kube-system kube-controller-manager-master 1/1 Running 2 (5m14s ago) 7m7s
kube-system kube-proxy-6krm9 1/1 Running 1 (5m22s ago) 7m1s
kube-system kube-scheduler-master 1/1 Running 1 (5m23s ago) 7m5s
(到此为止,Master节点就已经安装成功了)
# 帮助作者改进文档
如果您喜欢这篇文档,想让它变得更好,您可以:
- 推荐这篇文档,让更多的人知道。
- 给作者反馈和建议:tianye3223@gmail.com