K8S-1
K8S集群维护
1、集群维护
1.1 添加与删除master
1.2 添加与删除node
1.3 升级master
1.4 升级node
1.5 master高可用机制与验证
2、kubectl 常用命令及kubectlnetes组件-etcd
2.1 etcd 简介及命令
Etcd:
https://kubernetes.io/zh/docs/tasks/administer-cluster/configure-upgrade-etcd
- Etcd是CoreOS公司开发目前是Kubernetes默认使用的key-value数据存储系统,用于保存kubernetes的所有集群数据,etcd支持分布式集群功能,生产环境使用时需要etcd数据提供定期备份机制。
2.2 etcd 数据备份与恢复
3、DNS 与dashboard
3.1 coredns 安装
3.1.1 下载地址
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.22.md#downloads-for-v1225
3.1.2 下载完成后解压
tar xvf kubernetes-v1.22.5.tar.gz
root@130-me-et-node-1:~# cd /usr/local/src/kubernetes/cluster/addons/dns/coredns
root@130-me-et-node-1:/usr/local/src/kubernetes/cluster/addons/dns/coredns# ll
total 44
drwxr-xr-x 2 root root 4096 Dec 16 16:54 ./
drwxr-xr-x 5 root root 4096 Dec 16 16:54 ../
-rw-r--r-- 1 root root 1075 Dec 16 16:54 Makefile
-rw-r--r-- 1 root root 4966 Dec 16 16:54 coredns.yaml.base
-rw-r--r-- 1 root root 5016 Dec 16 16:54 coredns.yaml.in
-rw-r--r-- 1 root root 5018 Dec 16 16:54 coredns.yaml.sed
-rw-r--r-- 1 root root 344 Dec 16 16:54 transforms2salt.sed
-rw-r--r-- 1 root root 287 Dec 16 16:54 transforms2sed.sed
root@130-me-et-node-1:/usr/local/src/kubernetes/cluster/addons/dns/coredns#
root@130-me-et-node-1:/usr/local/src/kubernetes/cluster/addons/dns/coredns# cp coredns.yaml.base /root/coredns.yaml
root@130-me-et-node-1:/usr/local/src/kubernetes/cluster/addons/dns/coredns# cd /root/
root@130-me-et-node-1:~# vim coredns.yaml
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa { #修改成自己域名后缀
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . 223.6.6.6 { # 请求转发,将自己解析不了的域名转发出去;
max_concurrent 1000
}
cache 30
loop
reload
loadbalance
}
######
containers:
- name: coredns
image: coredns/coredns:1.8.6
imagePullPolicy: IfNotPresent
resources:
limits:
memory: 256Mi #资源限制
requests:
cpu: 100m
memory: 70Mi
###############
spec:
selector:
k8s-app: kube-dns
clusterIP: 10.100.0.2 # 装好K8Sdns 自动生成的ip
ports:
#####################
containers:
- name: coredns
image: coredns/coredns:1.8.6 #修改镜像仓库
imagePullPolicy: IfNotPresent
3.1.3 如果容器显示runing,但是状态为0/1时,需要添加如下配置
- apiGroups:
- discovery.k8s.io
resources:
- endpointslices
verbs:
- list
- watch
3.1.4 执行文件
root@130-me-et-node-1:~# kubectl apply -f coredns.yaml
root@130-me-et-node-1:~# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default net-test1 1/1 Running 5 (24h ago) 7d21h
default net-test2 1/1 Running 4 (24h ago) 7d20h
default net-test3 1/1 Running 3 (24h ago) 7d20h
default net-test4 1/1 Running 13 (19h ago) 7d20h
kube-system calico-kube-controllers-59df8b6856-6zfwp 1/1 Running 4 (41m ago) 7d21h
kube-system calico-node-d5f6b 1/1 Running 5 (41m ago) 7d20h
kube-system calico-node-qzks8 1/1 Running 5 (41m ago) 7d20h
kube-system coredns-69d84cdc49-x8c7v 1/1 Running 1 (24h ago) 4d22h
kube-system metrics-server-68fdd9f5b4-9wjm5 1/1 Running 6 7d19h
3.1.5 登录容器,测试DNS是否安装成功
root@130-me-et-node-1:~# kubectl exec net-test4 -it sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # ping www.baidu.com
PING www.baidu.com (14.215.177.39): 56 data bytes
64 bytes from 14.215.177.39: seq=0 ttl=127 time=406.864 ms
64 bytes from 14.215.177.39: seq=1 ttl=127 time=324.903 ms
^C
--- www.baidu.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 324.903/365.883/406.864 ms
/ # ping www.sina.com
PING www.sina.com (60.170.11.72): 56 data bytes
64 bytes from 60.170.11.72: seq=0 ttl=127 time=134.875 ms
64 bytes from 60.170.11.72: seq=1 ttl=127 time=14.106 ms
^C
--- www.sina.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 14.106/74.490/134.875 ms
3.2 官方dashboard
3.2.1 部署官方dashnoard,下载yaml文件基础
下载官方提供的yaml文件
root@130-me-et-node-1:~# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
root@130-me-et-node-1:~# mv recommended.yaml dashboard-v2.4.0.yaml
编写位置文件,将已下配置进行修改:大约在44行左右进行添加
type: NodePort #添加个port
ports:
- port: 443
targetPort: 8443
nodePort: 30088 #添加个指定端口
root@130-me-et-node-1:~# kubectl apply -f dashboard-v2.4.0.yaml
root@130-me-et-node-1:~# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default net-test1 1/1 Running 5 (24h ago) 7d21h
default net-test2 1/1 Running 4 (24h ago) 7d21h
default net-test3 1/1 Running 3 (24h ago) 7d20h
default net-test4 1/1 Running 13 (19h ago) 7d20h
kube-system calico-kube-controllers-59df8b6856-6zfwp 1/1 Running 4 (70m ago) 7d21h
kube-system calico-node-d5f6b 1/1 Running 5 (70m ago) 7d20h
kube-system calico-node-qzks8 1/1 Running 5 (70m ago) 7d20h
kube-system coredns-69d84cdc49-x8c7v 1/1 Running 1 (24h ago) 4d23h
kube-system metrics-server-68fdd9f5b4-9wjm5 1/1 Running 6 7d20h
kubernetes-dashboard dashboard-metrics-scraper-c45b7869d-zhwht 1/1 Running 0 2m52s
kubernetes-dashboard kubernetes-dashboard-576cb95f94-f7bjl 1/1 Running 0 2m52s
root@130-me-et-node-1:~# kubectl get svc -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 7d22h
kube-system kube-dns ClusterIP 10.100.0.2 <none> 53/UDP,53/TCP,9153/TCP 4d23h
kube-system metrics-server ClusterIP 10.100.204.153 <none> 443/TCP 7d20h
kubernetes-dashboard dashboard-metrics-scraper ClusterIP 10.100.6.23 <none> 8000/TCP 28m
kubernetes-dashboard kubernetes-dashboard NodePort 10.100.204.189 <none> 443:30088/TCP 28m
3.2.2 浏览器输入:https://ip+30088端口
- 使用kubeconfig进行验证